Проблема с входом от последовательного монитора
У меня есть фрагмент кода, как показано, и я хочу распечатать значение, которое я отправляю с помощью последовательного монитора, вместе с сообщением: "Запись данных в ведомое устройство...".
Но каждый раз, когда я ввожу символ/число в последовательный монитор (например, 'a', как показано), цикл выполняется два раза, а не один раз. Похоже, что дополнительный символ (несколько невидимый или нулевой) отправляется вместе с введенным символом.
Если я использую условие (Serial.available()>1), то цикл выполняется только один раз при отправке одного символа.
Почему так?
@Bhuvnesh, 👍-1
Обсуждение1 ответ
Лучший ответ:
Я подозреваю, что отправляется символ конца строки (вероятно, \n или \r, см. комментарий Эдгара Боне) или конец строки (символ 0).
Это легко узнать, напечатав целочисленное значение символа:
char c = serial.read();
Serial.print((int) c);
На самом деле '\n' = 10 (он же LF, перевод строки, новая строка), не путать с '\r' = 13 (CR, возврат каретки). И да, это '\n', о чем свидетельствует выбор «Новая строка» в раскрывающемся меню внизу. Другими вариантами этого меню являются «Без конца строки», «Возврат каретки» и «И NL, и CR». Обратите внимание, что последний вариант отправляет CR перед LF., @Edgar Bonet
@EdgarBonet Спасибо за ваше разъяснение, я выдвинул ваш комментарий. Всегда лучше проверять точные символы, которые заканчивают строку., @Michel Keijzers
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- В чем разница между Serial.write и Serial.print? И когда они используются?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Программы построения последовательных данных
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Очистить существующий массив при получении новой последовательной команды
Пожалуйста, скопируйте код в виде текста вместо плохих дампов экрана., @Michel Keijzers